package com.divemotor.ventarepuestosinternet.model;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Transient;

@Entity
@Table(name = "REP_MOV_PROMOCION_REPUESTO")
@NamedQueries({
	@NamedQuery(name="PromocionRepuesto.listarPromocionRepuesto", query="SELECT pr FROM PromocionRepuesto pr JOIN FETCH pr.repuesto re WHERE pr.promocion.idPromocion = :idPromocion")
})
public class PromocionRepuesto implements Serializable {

	private static final long serialVersionUID = 1L;
	
	@EmbeddedId
	private PromocionRepuestoPK promocionRepuestoPK;
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="COD_ID_PROMOCION", referencedColumnName="COD_ID_PROMOCION", insertable = false, updatable = false)
	private Promocion promocion;
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="NUM_ID_REPUESTO", referencedColumnName="NUM_ID_REPUESTO", insertable = false, updatable = false)
	private Repuesto repuesto;
	@Column(name="CAN_REFERENCIAL")
	private Integer cantidadReferencial;
	@Transient
	private String keyListado;
	
	public PromocionRepuesto() {
		this.promocionRepuestoPK = new PromocionRepuestoPK();
		this.promocion = new Promocion();
		this.repuesto = new Repuesto();
	}

	public PromocionRepuestoPK getPromocionRepuestoPK() {
		return promocionRepuestoPK;
	}

	public void setPromocionRepuestoPK(PromocionRepuestoPK promocionRepuestoPK) {
		this.promocionRepuestoPK = promocionRepuestoPK;
	}

	public Promocion getPromocion() {
		return promocion;
	}

	public void setPromocion(Promocion promocion) {
		this.promocion = promocion;
	}

	public Repuesto getRepuesto() {
		return repuesto;
	}

	public void setRepuesto(Repuesto repuesto) {
		this.repuesto = repuesto;
	}

	public String getKeyListado() {
		return keyListado;
	}

	public void setKeyListado(String keyListado) {
		this.keyListado = keyListado;
	}

	public Integer getCantidadReferencial() {
		return cantidadReferencial;
	}

	public void setCantidadReferencial(Integer cantidadReferencial) {
		this.cantidadReferencial = cantidadReferencial;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((promocionRepuestoPK == null) ? 0 : promocionRepuestoPK.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj){
			return true;
		}
		if (obj == null){
			return false;
		}
		if (getClass() != obj.getClass()){
			return false;
		}
		PromocionRepuesto other = (PromocionRepuesto) obj;
		if (promocionRepuestoPK == null) {
			if (other.promocionRepuestoPK != null){
				return false;
			}
		} else if (!promocionRepuestoPK.equals(other.promocionRepuestoPK)){
			return false;
		}
		return true;
	}
	
}
